package com.smart.translator.example;

import android.content.Context;
import com.smart.translator.utils.KeyPositionUtils;
import com.smart.translator.utils.KeyPositionUtils.Point;
import com.smart.translator.utils.KeyPositionUtils.ButtonInfo;

/**
 * 键位位置使用示例
 * 展示如何使用KeyPositionUtils获取按钮位置
 */
public class KeyPositionExample {
    
    // 常用应用包名常量
    public static final String PACKAGE_WECHAT = "com.tencent.mm";
    public static final String PACKAGE_QQ = "com.tencent.mobileqq";
    public static final String PACKAGE_FACEBOOK = "com.facebook.katana";
    public static final String PACKAGE_WHATSAPP = "com.whatsapp";
    
    /**
     * 示例：根据包名获取微信输入框按钮位置
     */
    public static Point getWeChatInputPositionByPackage(Context context) {
        return KeyPositionUtils.getButtonPositionByPackage(context, PACKAGE_WECHAT, KeyPositionUtils.ID_INPUT_NO_IME);
    }
    
    /**
     * 示例：根据包名获取微信发送按钮位置
     */
    public static Point getWeChatSendPositionByPackage(Context context) {
        return KeyPositionUtils.getButtonPositionByPackage(context, PACKAGE_WECHAT, KeyPositionUtils.ID_SEND_NO_IME);
    }
    
    /**
     * 示例：根据包名获取QQ输入框按钮位置
     */
    public static Point getQQInputPositionByPackage(Context context) {
        return KeyPositionUtils.getButtonPositionByPackage(context, PACKAGE_QQ, KeyPositionUtils.ID_INPUT_NO_IME);
    }
    
    /**
     * 示例：根据包名获取QQ发送按钮位置
     */
    public static Point getQQSendPositionByPackage(Context context) {
        return KeyPositionUtils.getButtonPositionByPackage(context, PACKAGE_QQ, KeyPositionUtils.ID_SEND_NO_IME);
    }
    
    /**
     * 示例：获取微信输入框按钮位置
     */
    public static Point getWeChatInputPosition(Context context) {
        // 方法1：使用分组索引
        return KeyPositionUtils.getButtonPosition(context, 0, KeyPositionUtils.ID_INPUT_NO_IME);
        
        // 方法2：使用分组名称
        // return KeyPositionUtils.getButtonPosition(context, "微信", KeyPositionUtils.ID_INPUT_NO_IME);
    }
    
    /**
     * 示例：获取微信发送按钮位置
     */
    public static Point getWeChatSendPosition(Context context) {
        return KeyPositionUtils.getButtonPosition(context, 0, KeyPositionUtils.ID_SEND_NO_IME);
    }
    
    /**
     * 示例：获取QQ输入框按钮位置
     */
    public static Point getQQInputPosition(Context context) {
        return KeyPositionUtils.getButtonPosition(context, 1, KeyPositionUtils.ID_INPUT_NO_IME);
    }
    
    /**
     * 示例：获取QQ发送按钮位置
     */
    public static Point getQQSendPosition(Context context) {
        return KeyPositionUtils.getButtonPosition(context, 1, KeyPositionUtils.ID_SEND_NO_IME);
    }
    
    /**
     * 示例：检查按钮是否存在
     */
    public static boolean checkButtonExists(Context context, String groupName, int groupId) {
        // 先找到分组索引
        for (int i = 0; i < KeyPositionUtils.GROUP_NAMES.length; i++) {
            if (KeyPositionUtils.GROUP_NAMES[i].equals(groupName)) {
                return KeyPositionUtils.isButtonExists(context, i, groupId);
            }
        }
        return false;
    }
    
    /**
     * 示例：根据包名检查按钮是否存在
     */
    public static boolean checkButtonExistsByPackage(Context context, String packageName, int groupId) {
        return KeyPositionUtils.isButtonExistsByPackage(context, packageName, groupId);
    }
    
    /**
     * 示例：获取微信分组下已配置的按钮数量
     */
    public static int getWeChatButtonCount(Context context) {
        return KeyPositionUtils.getConfiguredButtonCount(context, 0);
    }
    
    /**
     * 示例：根据包名获取已配置的按钮数量
     */
    public static int getButtonCountByPackage(Context context, String packageName) {
        return KeyPositionUtils.getConfiguredButtonCountByPackage(context, packageName);
    }
    
    /**
     * 示例：获取指定包名的所有按钮位置信息
     */
    public static ButtonInfo[] getAllButtonPositionsByPackage(Context context, String packageName) {
        return KeyPositionUtils.getAllButtonPositionsByPackage(context, packageName);
    }
    
    /**
     * 示例：获取微信的所有按钮位置信息
     */
    public static ButtonInfo[] getAllWeChatButtonPositions(Context context) {
        return KeyPositionUtils.getAllButtonPositionsByPackage(context, PACKAGE_WECHAT);
    }
    
    /**
     * 示例：模拟点击操作（使用包名）
     */
    public static void simulateClickByPackage(Context context, String packageName, int groupId) {
        Point position = KeyPositionUtils.getButtonPositionByPackage(context, packageName, groupId);
        if (position != null) {
            // 这里可以执行实际的点击操作
            System.out.println("点击位置: " + position.x + ", " + position.y);
            
            // 示例：模拟点击微信输入框
            if (PACKAGE_WECHAT.equals(packageName) && groupId == KeyPositionUtils.ID_INPUT_NO_IME) {
                System.out.println("点击微信输入框");
            }
            // 示例：模拟点击微信发送按钮
            else if (PACKAGE_WECHAT.equals(packageName) && groupId == KeyPositionUtils.ID_SEND_NO_IME) {
                System.out.println("点击微信发送按钮");
            }
            // 示例：模拟点击QQ输入框
            else if (PACKAGE_QQ.equals(packageName) && groupId == KeyPositionUtils.ID_INPUT_NO_IME) {
                System.out.println("点击QQ输入框");
            }
        } else {
            System.out.println("未找到对应的按钮位置");
        }
    }
    
    /**
     * 示例：模拟点击操作
     */
    public static void simulateClick(Context context, String groupName, int groupId) {
        Point position = KeyPositionUtils.getButtonPosition(context, groupName, groupId);
        if (position != null) {
            // 这里可以执行实际的点击操作
            System.out.println("点击位置: " + position.x + ", " + position.y);
            
            // 示例：模拟点击微信输入框
            if ("微信".equals(groupName) && groupId == KeyPositionUtils.ID_INPUT_NO_IME) {
                System.out.println("点击微信输入框");
            }
            // 示例：模拟点击微信发送按钮
            else if ("微信".equals(groupName) && groupId == KeyPositionUtils.ID_SEND_NO_IME) {
                System.out.println("点击微信发送按钮");
            }
        } else {
            System.out.println("未找到对应的按钮位置");
        }
    }
    
    /**
     * 示例：获取所有微信相关按钮位置
     */
    public static void getAllWeChatPositions(Context context) {
        Point inputNoIme = KeyPositionUtils.getButtonPosition(context, "微信", KeyPositionUtils.ID_INPUT_NO_IME);
        Point sendNoIme = KeyPositionUtils.getButtonPosition(context, "微信", KeyPositionUtils.ID_SEND_NO_IME);
        Point inputWithIme = KeyPositionUtils.getButtonPosition(context, "微信", KeyPositionUtils.ID_INPUT_WITH_IME);
        Point sendWithIme = KeyPositionUtils.getButtonPosition(context, "微信", KeyPositionUtils.ID_SEND_WITH_IME);
        
        System.out.println("微信按钮位置:");
        System.out.println("输入框(无输入法): " + inputNoIme);
        System.out.println("发送按钮(无输入法): " + sendNoIme);
        System.out.println("输入框(有输入法): " + inputWithIme);
        System.out.println("发送按钮(有输入法): " + sendWithIme);
    }
    
    /**
     * 示例：根据包名获取所有微信相关按钮位置
     */
    public static void getAllWeChatPositionsByPackage(Context context) {
        Point inputNoIme = KeyPositionUtils.getButtonPositionByPackage(context, PACKAGE_WECHAT, KeyPositionUtils.ID_INPUT_NO_IME);
        Point sendNoIme = KeyPositionUtils.getButtonPositionByPackage(context, PACKAGE_WECHAT, KeyPositionUtils.ID_SEND_NO_IME);
        Point inputWithIme = KeyPositionUtils.getButtonPositionByPackage(context, PACKAGE_WECHAT, KeyPositionUtils.ID_INPUT_WITH_IME);
        Point sendWithIme = KeyPositionUtils.getButtonPositionByPackage(context, PACKAGE_WECHAT, KeyPositionUtils.ID_SEND_WITH_IME);
        
        System.out.println("微信按钮位置(通过包名):");
        System.out.println("输入框(无输入法): " + inputNoIme);
        System.out.println("发送按钮(无输入法): " + sendNoIme);
        System.out.println("输入框(有输入法): " + inputWithIme);
        System.out.println("发送按钮(有输入法): " + sendWithIme);
    }
    
    /**
     * 示例：获取所有支持的包名
     */
    public static void printSupportedPackages() {
        String[] packages = KeyPositionUtils.getSupportedPackages();
        System.out.println("支持的包名:");
        for (int i = 0; i < packages.length; i++) {
            System.out.println(i + ": " + packages[i] + " (" + KeyPositionUtils.GROUP_NAMES[i] + ")");
        }
    }
    
    /**
     * 示例：根据包名获取分组名称
     */
    public static String getGroupNameByPackage(String packageName) {
        int groupIndex = KeyPositionUtils.getGroupIndexByPackage(packageName);
        if (groupIndex >= 0 && groupIndex < KeyPositionUtils.GROUP_NAMES.length) {
            return KeyPositionUtils.GROUP_NAMES[groupIndex];
        }
        return null;
    }
    
    /**
     * 示例：根据分组名称获取包名
     */
    public static String getPackageByGroupName(String groupName) {
        return KeyPositionUtils.getPackageByGroupName(groupName);
    }
} 